home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.1 (Developer) [x86] / NeXT Step 3.1 Intel dev.cdr.dmg / NextDeveloper / Headers / driverkit / i386 / ioPorts.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-03-12  |  1.1 KB  |  86 lines

  1. /*
  2.  * Copyright (c) 1993 NeXT Computer, Inc.
  3.  *
  4.  * Primatives for IO port access.
  5.  *
  6.  * HISTORY
  7.  *
  8.  * 16Feb93 David E. Bohman at NeXT
  9.  *    Created.
  10.  */
  11.  
  12. #ifndef _DRIVERKIT_I386_IOPORTS_
  13. #define _DRIVERKIT_I386_IOPORTS_
  14.  
  15. #import <driverkit/i386/driverTypes.h>
  16.  
  17. static __inline__
  18. unsigned char
  19. inb(
  20.     IOEISAPortAddress    port
  21. )
  22. {
  23.     unsigned char    data;
  24.     
  25.     asm volatile(
  26.         "inb %1,%0"
  27.     
  28.     : "=a" (data)
  29.     : "d" (port));
  30.     
  31.     return (data);
  32. }
  33.  
  34. static __inline__
  35. unsigned short
  36. inw(
  37.     IOEISAPortAddress    port
  38. )
  39. {
  40.     unsigned short    data;
  41.     
  42.     asm volatile(
  43.         "inw %1,%0"
  44.     
  45.     : "=a" (data)
  46.     : "d" (port));
  47.     
  48.     return (data);
  49. }
  50.  
  51. static __inline__
  52. void
  53. outb(
  54.     IOEISAPortAddress    port,
  55.     unsigned char    data
  56. )
  57. {
  58.     static int        xxx;
  59.  
  60.     asm volatile(
  61.         "outb %2,%1; lock; incl %0"
  62.     
  63.     : "=m" (xxx)
  64.     : "d" (port), "a" (data), "0" (xxx)
  65.     : "cc");
  66. }
  67.  
  68. static __inline__
  69. void
  70. outw(
  71.     IOEISAPortAddress    port,
  72.     unsigned short    data
  73. )
  74. {
  75.     static int        xxx;
  76.  
  77.     asm volatile(
  78.         "outw %2,%1; lock; incl %0"
  79.     
  80.     : "=m" (xxx)
  81.     : "d" (port), "a" (data), "0" (xxx)
  82.     : "cc");
  83. }
  84.  
  85. #endif    _DRIVERKIT_I386_IOPORTS_
  86.